Зачем нужен протокол языкового сервера (LSP)?

LSP (протокол языкового сервера) сегодня весьма популярен. Есть стандартное объяснение этого феномена. Возможно, ранее вам уже попадалась эта картинка, у нас также являющаяся заглавной.

Считаю, что такое стандартное объяснение популярности LSP – неверное. Ниже предложу вам альтернативную трактовку.

Стандартное объяснение

Стандартное объяснение строится так:

Существует M редакторов и N языков. Если вы хотите поддерживать конкретный язык в интересующем вас редакторе, то для этого вам понадобится выделенный плагин. То есть, M * N будет работать, что наглядно показано на картинке выше. В данном случае LSP сужает эту картинку, приводя к тонкому общему знаменателю M + N – как показано на картинке ниже.

Почему это объяснение ошибочное?

Проблему, возникающую с этим объяснением, также удобнее всего проиллюстрировать. Если коротко, на картинках выше не соблюден масштаб. На следующей картинке точнее показано, как, например, взаимодействует комбинация rust-analyzer + VS Code:

(Большой) круг

Читать далее